home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / misc_src / knowhow4 / output.h < prev    next >
C/C++ Source or Header  |  1995-11-01  |  2KB  |  46 lines

  1. // OUTPUT.H
  2.                    //////////////////////////////////////////////
  3. #ifndef __OUTPUT_H_            // Output.h  file controls screen <--> text //
  4. #define __OUTPUT_H_            //        coordinates recalculation         //
  5.                    // Text screen is the 25 x 80 rectangle     //
  6. #include <graphics.h>          // which is  independent from concrete type //
  7. #include "colors.h"            //            of graphic adapter            //
  8. #include "geom.h"              //////////////////////////////////////////////
  9.  
  10. /*  There are 4 types of functions ...L, T and ...R, B. L (left) returns
  11.         left coordinate (0, 8, 16 ...), R - right (7, 15 ...).
  12.         For loc(s) we have ...LT, ...LB, ...RT and ...RB versions.
  13.         Rectangle (0, 0, 10, 10) in text mode for VGA (8 x 19 pixels)
  14.         is represented as (0, 0, 79, 189) in screen mode.
  15. */
  16. ///////////////////////////////
  17. inline int screenXL(int x) { return x << pScreenSet->log2cell_width;       }
  18. inline int screenYT(int y) { return y * pScreenSet->cell_height;           }
  19. inline int screenXR(int x) { return (x << pScreenSet->log2cell_width) - 1; }
  20. inline int screenYB(int y) { return (y * pScreenSet->cell_height)     - 1; }
  21.  
  22. inline int textX(int x)    { return x >> pScreenSet->log2cell_width;     }
  23. inline int textY(int y)    { return y / pScreenSet->cell_height;         }
  24. ///////////////////////////////
  25. inline loc screenLocLT(loc l)  { return loc(screenXL(l.X), screenYT(l.Y)); }
  26. inline loc screenLocLB(loc l)  { return loc(screenXL(l.X), screenYB(l.Y)); }
  27. inline loc screenLocRT(loc l)  { return loc(screenXR(l.X), screenYT(l.Y)); }
  28. inline loc screenLocRB(loc l)  { return loc(screenXR(l.X), screenYB(l.Y)); }
  29.  
  30. inline loc textLoc(loc l)      { return loc(textX(l.X), textY(l.Y));       }
  31. /////////////////////////////
  32. inline rect screenRect(rect rectangle)
  33.     {
  34.     return rect(screenXL(rectangle.origin.X), screenYT(rectangle.origin.Y),
  35.             screenXR(rectangle.corner.X), screenYB(rectangle.corner.Y));
  36.     }
  37.  
  38. inline rect textRect(rect rectangle)
  39.     {
  40.     return rect(textX(rectangle.origin.X),     textY(rectangle.origin.Y),
  41.             textX(rectangle.corner.X + 1), textY(rectangle.corner.Y + 1));
  42.     }
  43.  
  44.  
  45. #endif __OUTPUT_H_
  46.